---------> Furb3T <---------
presenta:
Da Time Limit a Registrato.
Salve a tutti i miei carissimi lettori, oggi vi voglio deliziare con un prg che ha dell'incredibile: voi pensavate di avere un prg shareware per le mani con tanto di nag screen e time limit, ed invece i programmatori avevano previsto la possibilit� di registrarsi senza per� far vedere questa opzione all'utente, e solo dopo un'analisi del codice assembler ho scoperto questa variante.... SIETE CURIOSI !!!! Benissimo procediamo.
Il prg target � Adobe ImageReady 1.0 e lo strumento che andremo ad utilizzare sar� il classico Softice. Come si presenta il prg quando viene lanciato? Con una classica nag screen che indica tra l'altro il tempo residuo di vita del prg. A questo punto potremmo gi� agire eliminando il time limit e la nag, come? semplicemente usando il cmd BPX DIALOGBOXPARAMA, in questo modo possiamo vedere dove il prg effettua il controllo del tempo e qual � la call che fa apparire sullo schermo la nag. Tuttavia questo tutorial si prefigge altri interessi, come vi avevo accennato all'inizio, quindi lascio questa operazione a chi vuole divertirsi ( consiglio a chi volesse seguire questa strada, che deve stare attento ed inserire un'istruzione che vada a modificare EDX altrimenti il prg crasher�).
Bene bene ora entriamo nel merito del tutorial. Prima di tutto portate la data del vostro sistema 2 mesi avanti, in questo modo quando lancerete il prg, questo si dovrebbe presentare con una nag che vi dice che avete terminato il periodo di prova. Fatto ci�, fissate in Softice un BPX DIALOGBOXPARAMA e lanciate l'applicazione; sicuramente entrerete in Sice, quindi premete F12 e sarete di nuovo nel prg che avr� caricato la nag. Premete l'unico tasto che potete premere, cio� QUIT, e sarete di nuovo dentro Sice. Ora fate caso ad una cosa; voi siete nell'istruzione successiva alla call che crea la nag, e questa istruzione vi dice : CMP EAX, 06 , ma se andate a vedere EAX potete vedere che ha come valore EAX = 00000007 ; ci� vuol dire che premendo il tasto QUIT viene ritornato al controllo il valore 7, e dato che QUIT � l'unico tasto che � possibile premere perch� esiste quell'istruzione CMP EAX,06 ?? Per scoprirlo che ho fatto, ho modificato il valore di EAX, con il comando R EAX = 00000006 , a questo punto il JE che si trova subito dopo il CMP � true e quindi avviene il salto che ci porta .............. ma che succede, ritorniamo nel prg e compare un nag dove vengono richieste le informazioni dell'utente per registrarsi, wow abbiamo trovato un'insieme di istruzioni che erano state nascoste.
Riempite tutti i campi e premete NEXT, comparir� una nuova schermata dove vi verr� richiesta la modalit� di pagamento tramite Carta di Credito; niente paura inserite un qualunque codice a 10 cifre nel campo del numero della carta di credito, inserite una qualunque scadenza e premete NexT; adesso vi chieder� come volete contattare la soci�t�, optate telefonicamente, quindi nella schermata successiva vi verr� richiesto di inserire il codice di sblocco del prg, codice che dovrebbe esservi stato dato dalla Adobe. Ok inseriamo un codice qualunque e mettiamo in Sice un BPX HMEMCPY, premete F5, ritornerete quindi nel prg, premete OK e vediamo che succede. Eccoci rientrati in Sice, F12 per circa 10 volte e vi ritroverete dentro una dll di image ready ed esattamente rsagnt32.dll, steppate con F10 fino ad arrivare a queste istruzioni:
1000B2DA DEC ECX -----> ECX contiene il numero di cifre del codice che abbiamo
inserito
1000B2DB CMP ECX,00A ----> se
le cifre del codice sono diverse da 10 allora non avviene il
1000B2DE JE 1000B31B
salto
per non modificare troppo il prg, inseriamo un codice a 10 cifre e ripetiamo l'operazione; questa volta il JE sar� soddisfatto e avverr� il salto, quindi arriviamo all'istruzione 1000B31B:
1000B31B MOV EDX , [100317D4]
1000B321 PUSH 1002B580 ------>
se fate D 1002B580 vedrete un codice alfanumerico
1000B326 ADD EDX , 00000106
1000B32C PUSH EDX
1000B32D PUSH 1002B560
1000B332 CALL 1000B950
1000B337 ADD ESP , 00C
1000B33A PUSH 1002B570 -----> in
1002B570 c' � il codice che abbiamo inserito
1000B33F PUSH 1002B580
1000B344 CALL 1001FAB0 ----->
questa call verifica che il codice inserito sia giusto e se lo �
1000B349 ADD ESP , 008
ritorna
come valore di EAX = 0
1000B34C TEST EAX , EAX
1000B3AB JNE 1000B3AB
Dato che avendo inserito un numero a caso di 10 cifre sicuramente non sar� quello giusto, avete due alternative: 1) Entrate nella call che si trova su 1000B344 e cercate di capire come viene generato il vero codice, oppure ( molto pi� semplicemente) 2) quando vi trovate sull'istruzione 1000B349, modificate il valore di Eax con il comando R EAX = 0, in entrambi i casi il prg vi dir� che da quel momento in poi � registrato, e voi non avrete pi� scocciature con le nag iniziali e con il time limit.
Ringraziamenti : A tutto il mio gruppo preferito RingZer0.